/**
 * 
 */
package rer.controller;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import javax.enterprise.context.RequestScoped;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.faces.model.SelectItem;
import javax.inject.Named;

import rer.model.Aluno;
import rer.model.Cliente;
import rer.persistencia.AlunoDAO;
import rer.persistencia.ClienteDAO;

/**
 * @author Henrique Serrat
 * @since 18/11/2014
 *
 */
@Named("alunoBean")
@RequestScoped

public class AlunoBean implements Serializable{

	private static final long serialVersionUID = 621121064998598251L;
	private AlunoDAO alunoDAO;
	private Aluno aluno;
	private List<SelectItem> atributo;
	private Cliente cliente;
	private ClienteDAO clienteDAO;
	
	public AlunoBean(){
		
		alunoDAO = new AlunoDAO();
		aluno = new Aluno();
		
	}

	/**
	 * @return the aluno
	 */
	public Aluno getAluno() {
		return aluno;
	}

	/**
	 * @param aluno
	 * @return
	 * @see rer.persistencia.AlunoDAO#cadastrar(rer.model.Aluno)
	 */
	public String cadastrar() {
		
		FacesContext context = FacesContext.getCurrentInstance();
		
		if(alunoDAO.cadastrar(aluno) == true){
			context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Aluno cadastrado com sucesso",""));
		}else{
			context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Aluno nao foi cadastrado",""));
		}
		
		return "matricular-aluno";
	}

	/**
	 * @param codigo
	 * @return
	 * @see rer.persistencia.AlunoDAO#editar(int)
	 */
	public String editar(int codigo) {
		aluno = alunoDAO.pesquisaAluno(codigo);
		
		return "editar-aluno";
	}

	/**
	 * @param codigo
	 * @return
	 * @see rer.persistencia.AlunoDAO#deletar(int)
	 */
	public String deletar(int id) {
		
		FacesContext context = FacesContext.getCurrentInstance();
			
		if(alunoDAO.deletar(id) == true){
			
			context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Aluno deletado com sucesso",""));
		}else{
			context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Aluno nao foi deletado.",""));
			System.out.println("N�o obteve sucesso ao deletar. LER LOG!");	
		}		

		
		return "listar-alunos";
	}

	/**
	 * @return
	 * @see rer.persistencia.AlunoDAO#listar()
	 */
	public List<Aluno> listar() {
		return alunoDAO.listar();
	}

	/**
	 * @param aluno the aluno to set
	 */
	public void setAluno(Aluno aluno) {
		this.aluno = aluno;
	}

	public List<SelectItem> getSexo() {

		if (this.atributo == null) {

			this.atributo = new ArrayList<SelectItem>();

			this.atributo.add(new SelectItem(new Character('M'), "Masculino"));

			this.atributo.add(new SelectItem(new Character('F'), "Feminino"));
		}

		return atributo;
	}
	
		
	public List<SelectItem> getStatus() {

		if (this.atributo == null) {

			this.atributo = new ArrayList<SelectItem>();

			this.atributo.add(new SelectItem(new Character('A'), "Ativo"));

			this.atributo.add(new SelectItem(new Character('I'), "Inativo"));
		}

		return atributo;
	}
	
	public String salvarEdicao(){
		
		FacesContext context = FacesContext.getCurrentInstance();
	
	
		if(alunoDAO.editar(aluno)){
			
			context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Aluno atualizado com sucesso", ""));
			
		}else {
			context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Aluno nao foi atualizado", ""));
		}

		
		return "listar-alunos";
		
	}
	
	
	public List<Cliente> ultimosClientes(){
		cliente = new Cliente();
		clienteDAO = new ClienteDAO();
		return clienteDAO.ultimosClientes();
	}

	/**
	 * @param id
	 * @return
	 * @see rer.persistencia.AlunoDAO#pesquisaAluno(int)
	 */
	public Aluno pesquisaAluno(int id) {
		return alunoDAO.pesquisaAluno(id);
	}
	
	public String detalhes(int id){

		aluno = alunoDAO.pesquisaAluno(id);
		
		return "detalhes-aluno";
	}
	
	
}
